//
//  BoletoBanco1CEF14Tests.m
//  iBoleto
//
//  Created by Diego Fincatto on 12/01/11.
//  Copyright 2011 Wmix Distribuidora Ltda. All rights reserved.

#import "BoletoBanco1CEF14Tests.h"
#import "BoletoDados.h"
#import "BoletoBanco.h"
#import "BoletoBancoCEF.h"
#import "BoletoUtil.h"

@implementation BoletoBanco1CEF14Tests

- (void)setUp {
    [super setUp];

    //data de vencimento
    dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"dd/MM/yyyy"];
    
    //cria um dado de boleto
    boletoDados = [[BoletoDados alloc] init];
    [boletoDados setAgencia:@"1348"];
    [boletoDados setCarteira:@"8"];
    [boletoDados setCodigoFornecidoAgencia:@"31"];
    [boletoDados setCodigoOperacao:@"870"];
    [boletoDados setDataVencimento:[dateFormatter dateFromString:@"10/09/2009"]];
    [boletoDados setNossoNumero:@"12000045996941"];
    [boletoDados setValor:[NSDecimalNumber decimalNumberWithString:@"42.71"]];
}

- (void)tearDown {
    [boletoDados release], boletoDados = nil;
    [dateFormatter release], dateFormatter = nil;
    [super tearDown];
}

- (void)testCodigoBanco {
    id<BoletoBanco> boletoBanco = [[BoletoBancoCEF alloc] initWithDados:boletoDados];
    STAssertEqualObjects(@"104", [boletoBanco codigoBanco], nil);
    [boletoBanco release], boletoBanco = nil;
}

- (void)testMoeda {
    id<BoletoBanco> boletoBanco = [[BoletoBancoCEF alloc] initWithDados:boletoDados];
    STAssertEqualObjects(@"9", [boletoBanco moeda], nil);
    [boletoBanco release], boletoBanco = nil;
}

- (void)testCampoLivre {
    id<BoletoBanco> boletoBanco = [[BoletoBancoCEF alloc] initWithDados:boletoDados];
    STAssertEqualObjects(@"00031"@"1348"@"87"@"12000045996941", [boletoBanco campoLivre], nil);
    [boletoBanco release], boletoBanco = nil;
}

- (void)testCampo1 {
    id<BoletoBanco> boletoBanco = [[BoletoBancoCEF alloc] initWithDados:boletoDados];
    STAssertEqualObjects(@"1049000316", [boletoBanco campo1], nil);
    [boletoBanco release], boletoBanco = nil;    
}

- (void)testCampo2 {
    id<BoletoBanco> boletoBanco = [[BoletoBancoCEF alloc] initWithDados:boletoDados];
    STAssertEqualObjects(@"13488712004", [boletoBanco campo2], nil);
    [boletoBanco release], boletoBanco = nil;        
}

- (void)testCampo3 {
    id<BoletoBanco> boletoBanco = [[BoletoBancoCEF alloc] initWithDados:boletoDados];
    STAssertEqualObjects(@"00459969416", [boletoBanco campo3], nil);
    [boletoBanco release], boletoBanco = nil;        
}

- (void)testCampo4 {
    id<BoletoBanco> boletoBanco = [[BoletoBancoCEF alloc] initWithDados:boletoDados];
    STAssertEqualObjects(@"7", [boletoBanco campo4], nil);
    [boletoBanco release], boletoBanco = nil;        
}

- (void)testCampo5 {
    id<BoletoBanco> boletoBanco = [[BoletoBancoCEF alloc] initWithDados:boletoDados];
    STAssertEqualObjects(@"43560000004271", [boletoBanco campo5], nil);
    [boletoBanco release], boletoBanco = nil;        
}

- (void)testGeraLinhaDigitavelNossoNumero {
    id<BoletoBanco> boletoBanco = [[BoletoBancoCEF alloc] initWithDados:boletoDados];
    STAssertEqualObjects(@"10490.00316  13488.712004  00459.969416  7  43560000004271", [boletoBanco linhaDigitavel], nil);
    [boletoBanco release], boletoBanco = nil;   
}

- (void)testGeraCodigoBarrasNossoNumero {
    id<BoletoBanco> boletoBanco = [[BoletoBancoCEF alloc] initWithDados:boletoDados];
    STAssertEqualObjects(@"10497435600000042710003113488712000045996941", [boletoBanco codigoDeBarras], nil);
    [boletoBanco release], boletoBanco = nil;
}

@end
